﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAL;
namespace BLL
{
    public class ClientesC
    {



        #region Propiedades
        public int codigoCliente { get; set; }
        public string identificacion { get; set; }
        public int codigoId { get; set; }
        public string nombre { get; set; }
        public string apellido1 { get; set; }
        public string apellido2 { get; set; }
        public char genero { get; set; }
        public string email { get; set; }
        public int codigoTipoCliente { get; set; }
        #endregion

        #region variables privadas

        SqlConnection cnn;
        string mensaje_error;
        int numero_error;
        string sql;
        DataSet ds;
        
        #endregion

        #region Metodos
        public DataSet cargaClientes()
        {
            cnn = dal.TraeConexion("RentaCar", ref mensaje_error, ref numero_error);
            if (cnn == null)
            {
                // msg_error = mensaje_error;
                // num_error = numero_error;
                return null;
            }
            else
            {
                sql = "uspClientes";
                ParamStruct[] parametros = new ParamStruct[1];
                dal.AgregarDatosEstructuraParametros(ref parametros, 0, "@id", SqlDbType.Int, 0);
               
                ds = dal.EjecutaDataSet(cnn, sql, true, parametros, ref mensaje_error, ref numero_error);
                if (ds == null)
                {
                    //   msg_error = mensaje_error;
                    // num_error = numero_error;
                    return null;
                }
                else
                {
                    if (ds.Tables[0].Rows.Count > 0)
                    {

                        return ds;

                    }
                    else
                    {
                        return null;
                    }

                }
            }
        }
        public string insertarClientes()
        {
            cnn = dal.TraeConexion("RentaCar", ref mensaje_error, ref numero_error);
            if (cnn == null)
            {

                return "";
            }
            else
            {
                dal.Conectar(cnn, ref mensaje_error, ref numero_error);
                string sd = mensaje_error + "//" + numero_error + "?//?";
                sql = "uspClientes";
                ParamStruct[] parametros = new ParamStruct[9];


                dal.AgregarDatosEstructuraParametros(ref parametros, 0, "@id", SqlDbType.Int, 1);
                dal.AgregarDatosEstructuraParametros(ref parametros, 1, "@Identificacion", SqlDbType.VarChar, identificacion);
                dal.AgregarDatosEstructuraParametros(ref parametros, 2, "@Codigo_Identificacion", SqlDbType.Int, codigoId);
                dal.AgregarDatosEstructuraParametros(ref parametros, 3, "@Nombre", SqlDbType.VarChar, nombre);
                dal.AgregarDatosEstructuraParametros(ref parametros, 4, "@Apellido1", SqlDbType.VarChar, apellido1);
                dal.AgregarDatosEstructuraParametros(ref parametros, 5, "@Apellido2", SqlDbType.VarChar, apellido2);
                dal.AgregarDatosEstructuraParametros(ref parametros, 6, "@Genero", SqlDbType.Char, genero);
                dal.AgregarDatosEstructuraParametros(ref parametros, 7, "@Email", SqlDbType.VarChar, email);
                dal.AgregarDatosEstructuraParametros(ref parametros, 8, "@Codigo_Tipo_Cliente", SqlDbType.Int, codigoTipoCliente);
             

                ds = dal.EjecutaDataSet(cnn, sql, true, parametros, ref mensaje_error, ref numero_error);
                if (numero_error != 0)
                {
                    //insertar en tabla errores
                    sd = mensaje_error + "//" + numero_error + "?//?";
                    dal.Desconectar(cnn, ref mensaje_error, ref numero_error);

                    return sd;
                }

                return ds.Tables[0].Rows[0]["Msj"].ToString();
            }
        }
        public string actualizarCliente()
        {
            cnn = dal.TraeConexion("RentaCar", ref mensaje_error, ref numero_error);
            if (cnn == null)
            {

                return "";
            }
            else
            {
                dal.Conectar(cnn, ref mensaje_error, ref numero_error);
                string sd = mensaje_error + "//" + numero_error + "?//?";
                sql = "uspClientes";
                ParamStruct[] parametros = new ParamStruct[10];

                dal.AgregarDatosEstructuraParametros(ref parametros, 0, "@id", SqlDbType.Int, 2);
                dal.AgregarDatosEstructuraParametros(ref parametros, 1, "@Codigo_Cliente", SqlDbType.Int, codigoCliente);
                dal.AgregarDatosEstructuraParametros(ref parametros, 2, "@Identificacion", SqlDbType.VarChar, identificacion);
                dal.AgregarDatosEstructuraParametros(ref parametros, 3, "@Codigo_Identificacion", SqlDbType.Int, codigoId);
                dal.AgregarDatosEstructuraParametros(ref parametros, 4, "@Nombre", SqlDbType.VarChar, nombre);
                dal.AgregarDatosEstructuraParametros(ref parametros, 5, "@Apellido1", SqlDbType.VarChar, apellido1);
                dal.AgregarDatosEstructuraParametros(ref parametros, 6, "@Apellido2", SqlDbType.VarChar, apellido2);
                dal.AgregarDatosEstructuraParametros(ref parametros, 7, "@Genero", SqlDbType.Char, genero);
                dal.AgregarDatosEstructuraParametros(ref parametros, 8, "@Email", SqlDbType.VarChar, email);
                dal.AgregarDatosEstructuraParametros(ref parametros, 9, "@Codigo_Tipo_Cliente", SqlDbType.Int, codigoTipoCliente);

                ds = dal.EjecutaDataSet(cnn, sql, true, parametros, ref mensaje_error, ref numero_error);
                if (numero_error != 0)
                {
                    //insertar en tabla errores
                    sd = mensaje_error + "//" + numero_error + "?//?";
                    dal.Desconectar(cnn, ref mensaje_error, ref numero_error);

                    return sd;
                }

                return ds.Tables[0].Rows[0]["Msj"].ToString();
            }
        }
        public DataSet editarCliente()
        {
            cnn = dal.TraeConexion("RentaCar", ref mensaje_error, ref numero_error);
            if (cnn == null)
            {
                // msg_error = mensaje_error;
                // num_error = numero_error;
                return null;
            }
            else
            {
                sql = "uspClientes";
                ParamStruct[] parametros = new ParamStruct[2];
                dal.AgregarDatosEstructuraParametros(ref parametros, 0, "@id", SqlDbType.Int, 4);
                dal.AgregarDatosEstructuraParametros(ref parametros, 1, "@Codigo_Cliente", SqlDbType.Int, codigoCliente);


                ds = dal.EjecutaDataSet(cnn, sql, true, parametros, ref mensaje_error, ref numero_error);
                if (ds == null)
                {
                  
                    return null;
                }
                else
                {
                    if (ds.Tables[0].Rows.Count > 0)
                    {

                        return ds;

                    }
                    else
                    {
                        return null;
                    }

                }
            }
        }
        public string eliminarCliente()
        {
            cnn = dal.TraeConexion("RentaCar", ref mensaje_error, ref numero_error);
            if (cnn == null)
            {

                return "";
            }
            else
            {
                dal.Conectar(cnn, ref mensaje_error, ref numero_error);
                string sd = mensaje_error + "//" + numero_error + "?//?";
                sql = "uspClientes";
                ParamStruct[] parametros = new ParamStruct[2];


                dal.AgregarDatosEstructuraParametros(ref parametros, 0, "@id", SqlDbType.Int, 3);
                dal.AgregarDatosEstructuraParametros(ref parametros, 1, "@Codigo_Cliente", SqlDbType.Int, codigoCliente);



                ds = dal.EjecutaDataSet(cnn, sql, true, parametros, ref mensaje_error, ref numero_error);
                if (numero_error != 0)
                {
                    //insertar en tabla errores
                    sd = mensaje_error + "//" + numero_error + "?//?";
                    dal.Desconectar(cnn, ref mensaje_error, ref numero_error);

                    return sd;
                }

                return ds.Tables[0].Rows[0]["Msj"].ToString();
            }
        }



        #endregion
    }
}
